var jsCode = [
	'"use strict";',
	'function Person(age) {',
	'	if (age) {',
	'		this.age = age;',
	'	}',
	'}',
	'Person.prototype.getAge = function () {',
	'	return this.age;',
	'};'
].join('\n');

var editor = monaco.editor.create(document.getElementById('container'), {
	value: jsCode,
	language: 'javascript'
});

var myCondition1 = editor.createContextKey(/*key name*/ 'myCondition1', /*default value*/ false);
var myCondition2 = editor.createContextKey(/*key name*/ 'myCondition2', /*default value*/ false);

editor.addCommand(
	monaco.KeyCode.Tab,
	function () {
		// services available in `ctx`
		alert('my command is executing!');
	},
	'myCondition1 && myCondition2'
);

myCondition1.set(true);

setTimeout(function () {
	alert('now enabling also myCondition2, try pressing Tab!');
	myCondition2.set(true);
	// you can use myCondition2.reset() to go back to the default
}, 2000);
